package com.itheima.d5_api;

//目标：掌握线程常用构造器和方法的使用
public class Demo01 {
    public static void main(String[] args) {
        /**
         * 线程获取和设置线程名称：
         *      String getName()：获取当前线程的名称，默认线程名称是Thread-索引
         *      void setName(String name)：将此线程的名称更改为指定的名称，通过构造器也可以设置线程名称
         *
         * 获取当前线程对象：
         *      static Thread currentThread()：返回对当前正在执行的线程对象的引用
         *
         * 构造器：
         *      Thread(String name)：可以为当前线程指定名称
         *      Thread(Runnable target ，String name )：封装Runnable对象成为线程对象，并指定线程名称
         */
        //需求：获取主线程的名字
        //1. 获取主线程对象，也就是执行当前代码的线程对象
        Thread t1 = Thread.currentThread();

        //2. 调用getName方法获取名字
        String t1Name = t1.getName();
        //主线程也叫：main线程
        System.out.println(t1Name);

        //需求：手动创建一个线程，不给它取名字，尝试获取名字
        Thread t2 = new Thread();
        String t2Name = t2.getName();
        //线程对象默认就有名字：Thread-索引，索引从0开始
        System.out.println(t2Name);

        //需求：给t2线程换一个名字 "线程二"
        t2.setName("线程二");
        t2Name = t2.getName();
        System.out.println(t2Name);

        //需求：创建一个线程，创建时指定名字"线程三"
        Thread t3 = new Thread("线程三");
        String t3Name = t3.getName();
        System.out.println(t3Name);

        //需求：创建一个线程，既指定任务，又指定名字
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                System.out.println("执行代码...");
            }
        };

        Thread t4 = new Thread(runnable, "线程四");
        String t4Name = t4.getName();
        System.out.println(t4Name);
    }
}

